

//  webSocet 服务器端 
// # 创建 socket
// # 监听端口
// # 监听来自客户端的链接
// # 转发消息给其他的客户端
// # 监听客户端关闭 失去链接

var ws = require("ws")
var webSocetServer = ws.Server;
var port = 3800;
var {stringify}  =  require("querystring")

var wss = new webSocetServer({port})  // 创建 webSocket Server 
console.log("this webSocket Server is running at " + port )
var count = 0;
var info = "wuhan2008__"
var onLineUser = {}

wss.on("connection",(socket)=>{
    // 来自客户端链接  
    console.log(stringify(socket))
    count++;
    socket.name = info + count;
    onLineUser[socket.name] = socket;   // 每一个链接用户都插入 onLineUser

    // # 监听来自客户端的链接
    socket.on("message",msg=>{
        console.log(msg)
        // # 转发消息给其他的客户端  
        boardcast(msg,socket)
    })

    // # 监听客户端关闭 失去链接
    socket.on("close",()=>{
        boardcast("886,我下线了...",socket);
        setTimeout(()=>{
            delete onLineUser[socket.name]    // 通过  key 删除一个对象
        },5)
    })
})

// 广播  
function boardcast(msg,socket){
    var time = new Date();
    var hour = time.getHours();
    var min = time.getMinutes();

    for(var key in onLineUser){
        onLineUser[key].send(`${socket.name} (${hour}:${min}): ${msg}`); // 发送消息到客户端 
    }
}